# -*- coding:utf-8 -*-

# @Time    : 2023/5/13 02:24
# @Author  : zengwenjia
# @Email   : zengwenjia@lingxi.ai
# @File    : user_info_extract.py
# @Software: LLM_internal

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
from bot.insurance_consultant_simple.agent.llm_agent import LLMAgent

sale_sop = """
节点 | 节点目标
--- | ---
用户参加赠险|自我介绍并说明来意是送赠险，提问用户是否愿意接受赠险最后都用“好吧”这个词（例如：您查收一下好吧），用户不拒绝赠险自动激活生效，用户明确拒绝需要劝服，直到用户不拒绝
打开微信 | 用户接受赠险后,再引导用户操作领取权益,第一步,要带用户打开微信,用户拒绝需要劝服
找到微信添加公众号位置 | 用户打开微信后,第二步,要引导用户找到如何添加公众号,用户拒绝需要劝服
关注公众号 | 用户打开微信后,第三步,要引导用户搜索【如果有保】并看到【如果有保】公众号，用户说“好的”、“嗯”代表用户已经看到了公众号，用户拒绝需要劝服
看到公众号中激活码按键| 用户关注公众号后,第四步,指导用户找到【如果有保】公众号中的激活码按键,用户拒绝需要劝服
输入激活码 | 用户关注公众号后,第五步,告知激活码,输入激活码后自动进入赠险页面,用户拒绝需要劝服
领取赠险、看到短险页面 | 用户看到赠险界面，确认赠险携带的用户信息是否正确，如果信息不正确让用户修改信息,如果信息正确,引导用户点击【立即领取】按键,页面会自动跳转到短险页面,要询问用户手机显示的是【600万】医疗保障界面,用户拒绝需要劝服
确认费用 | 需要与用户确认费用是不是几块钱，用户表示看不见/没找到需要再次确认费用
协助投保 |需要指导用户按照页面提示操作支付，用户表示看不懂/没反应/你再说怎么操作等情况，需要多次协助用户操作。
确认投保完成/支付成功 |询问用户是否完成支付，用户如果没有明确表示自己已经完成了支付，需要多次确认用户已经完成了支付。
升级至600万保额 | 指导用户点击【升级至600万保障】按键，用户没有明确表示已经点击已经点击按键，需要多次指导，直到用户点击按键。
加保拖单 | 确认用户是否需要为自己的家人购买百万医疗保险，并协助用户完成投保，不管用户加保拖单是否成功,都要进行成交确认环节
再次加保拖单 | 再次确认用户是否需要为自己的家人购买百万医疗保险，并协助用户完成投保，不管用户加保拖单是否成功,都要进行成交确认环节
挂机| 遇到这三种情况，1、完成销售流程，2、用户未成年，3、用户表示自己或者家人都买了。
"""

default_template = """
作为一个专业的保险销售员，场景是通过电话的方式给用户赠送一个意外险(赠险),赠送成功后再销售给用户魔方百万医疗保险(短险)，你需要根据对话记录选择销售流程下一步的销售流程节点。

销售流程如下表格：
{sale_sop}

对话记录如下：
```
{conversation_history}
```
请注意:
1.销售流程节点按照表格从上到下执行,同时也要注意节点目标是否完成,在不引起用户反感的情况下,要节点目标达成后再进行下一个节点
2.根据保险销售员其他的话术一步一步确认销售流程的节点,但是需要忽略掉用户提出的问题,同时也忽略掉保险销售员对用户问题的解答
3.你的目的是完成销售,忽略用户的负向反馈,继续走销售流程
保险销售员的下一句的销售流程节点(仅选择销售流程表格中的一个节点)是:
"""
# 3.不要跳过任何节点,除非你已经确定用户已经非常有投保意向,可以跳过部分节点直接促成或协助用户投保
class SalesSop(LLMAgent):

    def __init__(self, role, conversation_history):
        conversation_history = conversation_history.replace("保险规划师", "保险销售员")
        self.prompt = default_template.format(role=role,
                                              conversation_history=conversation_history, sale_sop=sale_sop)
        super().__init__(self.prompt)
